{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sell_date</th>\n",
       "      <th>sell_price</th>\n",
       "      <th>bedrooms_num</th>\n",
       "      <th>bathrooms_num</th>\n",
       "      <th>house_area</th>\n",
       "      <th>park_area</th>\n",
       "      <th>floors</th>\n",
       "      <th>score</th>\n",
       "      <th>structure_area</th>\n",
       "      <th>basement_area</th>\n",
       "      <th>bulid_year</th>\n",
       "      <th>fix_year</th>\n",
       "      <th>latitude</th>\n",
       "      <th>longitude</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20150302</td>\n",
       "      <td>545000</td>\n",
       "      <td>3</td>\n",
       "      <td>2.25</td>\n",
       "      <td>1670</td>\n",
       "      <td>6240</td>\n",
       "      <td>1.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1240</td>\n",
       "      <td>430</td>\n",
       "      <td>1974</td>\n",
       "      <td>0</td>\n",
       "      <td>47.6413</td>\n",
       "      <td>-122.113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20150211</td>\n",
       "      <td>785000</td>\n",
       "      <td>4</td>\n",
       "      <td>2.50</td>\n",
       "      <td>3300</td>\n",
       "      <td>10514</td>\n",
       "      <td>2.0</td>\n",
       "      <td>10</td>\n",
       "      <td>3300</td>\n",
       "      <td>0</td>\n",
       "      <td>1984</td>\n",
       "      <td>0</td>\n",
       "      <td>47.6323</td>\n",
       "      <td>-122.036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20150107</td>\n",
       "      <td>765000</td>\n",
       "      <td>3</td>\n",
       "      <td>3.25</td>\n",
       "      <td>3190</td>\n",
       "      <td>5283</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9</td>\n",
       "      <td>3190</td>\n",
       "      <td>0</td>\n",
       "      <td>2007</td>\n",
       "      <td>0</td>\n",
       "      <td>47.5534</td>\n",
       "      <td>-122.002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>20141103</td>\n",
       "      <td>720000</td>\n",
       "      <td>5</td>\n",
       "      <td>2.50</td>\n",
       "      <td>2900</td>\n",
       "      <td>9525</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9</td>\n",
       "      <td>2900</td>\n",
       "      <td>0</td>\n",
       "      <td>1989</td>\n",
       "      <td>0</td>\n",
       "      <td>47.5442</td>\n",
       "      <td>-122.138</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20140603</td>\n",
       "      <td>449500</td>\n",
       "      <td>5</td>\n",
       "      <td>2.75</td>\n",
       "      <td>2040</td>\n",
       "      <td>7488</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>1200</td>\n",
       "      <td>840</td>\n",
       "      <td>1969</td>\n",
       "      <td>0</td>\n",
       "      <td>47.7289</td>\n",
       "      <td>-122.172</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sell_date  sell_price  bedrooms_num  bathrooms_num  house_area  park_area  \\\n",
       "0   20150302      545000             3           2.25        1670       6240   \n",
       "1   20150211      785000             4           2.50        3300      10514   \n",
       "2   20150107      765000             3           3.25        3190       5283   \n",
       "3   20141103      720000             5           2.50        2900       9525   \n",
       "4   20140603      449500             5           2.75        2040       7488   \n",
       "\n",
       "   floors  score  structure_area  basement_area  bulid_year  fix_year  \\\n",
       "0     1.0      8            1240            430        1974         0   \n",
       "1     2.0     10            3300              0        1984         0   \n",
       "2     2.0      9            3190              0        2007         0   \n",
       "3     2.0      9            2900              0        1989         0   \n",
       "4     1.0      7            1200            840        1969         0   \n",
       "\n",
       "   latitude  longitude  \n",
       "0   47.6413   -122.113  \n",
       "1   47.6323   -122.036  \n",
       "2   47.5534   -122.002  \n",
       "3   47.5442   -122.138  \n",
       "4   47.7289   -122.172  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data = pd.read_csv('data\\\\kc_train.csv')\n",
    "test_data = pd.read_csv('data\\\\kc_test.csv')\n",
    "train_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sell_date</th>\n",
       "      <th>sell_price</th>\n",
       "      <th>bedrooms_num</th>\n",
       "      <th>bathrooms_num</th>\n",
       "      <th>house_area</th>\n",
       "      <th>park_area</th>\n",
       "      <th>floors</th>\n",
       "      <th>score</th>\n",
       "      <th>structure_area</th>\n",
       "      <th>basement_area</th>\n",
       "      <th>bulid_year</th>\n",
       "      <th>fix_year</th>\n",
       "      <th>latitude</th>\n",
       "      <th>longitude</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1.000000e+04</td>\n",
       "      <td>1.000000e+04</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.0000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>1.000000e+04</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "      <td>10000.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.014392e+07</td>\n",
       "      <td>5.428749e+05</td>\n",
       "      <td>3.367600</td>\n",
       "      <td>2.1168</td>\n",
       "      <td>2082.488400</td>\n",
       "      <td>1.535273e+04</td>\n",
       "      <td>1.502850</td>\n",
       "      <td>7.664800</td>\n",
       "      <td>1791.474900</td>\n",
       "      <td>291.013500</td>\n",
       "      <td>1971.204700</td>\n",
       "      <td>85.209700</td>\n",
       "      <td>47.560629</td>\n",
       "      <td>-122.215845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>4.440706e+03</td>\n",
       "      <td>3.729258e+05</td>\n",
       "      <td>0.893169</td>\n",
       "      <td>0.7741</td>\n",
       "      <td>922.878916</td>\n",
       "      <td>4.577623e+04</td>\n",
       "      <td>0.543642</td>\n",
       "      <td>1.173873</td>\n",
       "      <td>829.449437</td>\n",
       "      <td>446.641339</td>\n",
       "      <td>29.322957</td>\n",
       "      <td>403.491421</td>\n",
       "      <td>0.138570</td>\n",
       "      <td>0.139739</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>2.014050e+07</td>\n",
       "      <td>7.500000e+04</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>390.000000</td>\n",
       "      <td>5.720000e+02</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>390.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1900.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>47.159300</td>\n",
       "      <td>-122.519000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.014072e+07</td>\n",
       "      <td>3.225000e+05</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.7500</td>\n",
       "      <td>1430.000000</td>\n",
       "      <td>5.023250e+03</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1190.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1951.750000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>47.471375</td>\n",
       "      <td>-122.329000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>2.014102e+07</td>\n",
       "      <td>4.507000e+05</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>2.2500</td>\n",
       "      <td>1910.000000</td>\n",
       "      <td>7.590000e+03</td>\n",
       "      <td>1.500000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>1560.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1975.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>47.572200</td>\n",
       "      <td>-122.234000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.015022e+07</td>\n",
       "      <td>6.450000e+05</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>2.5000</td>\n",
       "      <td>2550.000000</td>\n",
       "      <td>1.071700e+04</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>2211.500000</td>\n",
       "      <td>560.000000</td>\n",
       "      <td>1997.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>47.678400</td>\n",
       "      <td>-122.127000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>2.015053e+07</td>\n",
       "      <td>6.885000e+06</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>9890.000000</td>\n",
       "      <td>1.651359e+06</td>\n",
       "      <td>3.500000</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>8860.000000</td>\n",
       "      <td>4820.000000</td>\n",
       "      <td>2015.000000</td>\n",
       "      <td>2015.000000</td>\n",
       "      <td>47.777600</td>\n",
       "      <td>-121.315000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          sell_date    sell_price  bedrooms_num  bathrooms_num    house_area  \\\n",
       "count  1.000000e+04  1.000000e+04  10000.000000     10000.0000  10000.000000   \n",
       "mean   2.014392e+07  5.428749e+05      3.367600         2.1168   2082.488400   \n",
       "std    4.440706e+03  3.729258e+05      0.893169         0.7741    922.878916   \n",
       "min    2.014050e+07  7.500000e+04      0.000000         0.0000    390.000000   \n",
       "25%    2.014072e+07  3.225000e+05      3.000000         1.7500   1430.000000   \n",
       "50%    2.014102e+07  4.507000e+05      3.000000         2.2500   1910.000000   \n",
       "75%    2.015022e+07  6.450000e+05      4.000000         2.5000   2550.000000   \n",
       "max    2.015053e+07  6.885000e+06     10.000000         7.7500   9890.000000   \n",
       "\n",
       "          park_area        floors         score  structure_area  \\\n",
       "count  1.000000e+04  10000.000000  10000.000000    10000.000000   \n",
       "mean   1.535273e+04      1.502850      7.664800     1791.474900   \n",
       "std    4.577623e+04      0.543642      1.173873      829.449437   \n",
       "min    5.720000e+02      1.000000      3.000000      390.000000   \n",
       "25%    5.023250e+03      1.000000      7.000000     1190.000000   \n",
       "50%    7.590000e+03      1.500000      7.000000     1560.000000   \n",
       "75%    1.071700e+04      2.000000      8.000000     2211.500000   \n",
       "max    1.651359e+06      3.500000     13.000000     8860.000000   \n",
       "\n",
       "       basement_area    bulid_year      fix_year      latitude     longitude  \n",
       "count   10000.000000  10000.000000  10000.000000  10000.000000  10000.000000  \n",
       "mean      291.013500   1971.204700     85.209700     47.560629   -122.215845  \n",
       "std       446.641339     29.322957    403.491421      0.138570      0.139739  \n",
       "min         0.000000   1900.000000      0.000000     47.159300   -122.519000  \n",
       "25%         0.000000   1951.750000      0.000000     47.471375   -122.329000  \n",
       "50%         0.000000   1975.000000      0.000000     47.572200   -122.234000  \n",
       "75%       560.000000   1997.000000      0.000000     47.678400   -122.127000  \n",
       "max      4820.000000   2015.000000   2015.000000     47.777600   -121.315000  "
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "import time \n",
    "def getYear(dt):\n",
    "    dt = str(dt)\n",
    "    t = time.strptime(dt, '%Y%m%d')\n",
    "    return t.tm_year\n",
    "def getMonth(dt):\n",
    "    dt = str(dt)\n",
    "    t = time.strptime(dt, '%Y%m%d')\n",
    "    return t.tm_mon \n",
    "def getDay(dt):\n",
    "    dt = str(dt)\n",
    "    t = time.strptime(dt, '%Y%m%d')\n",
    "    return t.tm_mday\n",
    "def getWeek(dt):\n",
    "    dt = str(dt)\n",
    "    t = time.strptime(dt,'%Y%m%d')\n",
    "    return t.tm_wday"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data['year'] = train_data['sell_date'].apply(getYear)\n",
    "train_data['month'] = train_data['sell_date'].apply(getMonth)\n",
    "train_data['day'] = train_data['sell_date'].apply(getDay)\n",
    "train_data['week'] = train_data['sell_date'].apply(getWeek) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_data['year'] = test_data['sell_date'].apply(getYear)\n",
    "test_data['month'] = test_data['sell_date'].apply(getMonth)\n",
    "test_data['day'] = test_data['sell_date'].apply(getDay)\n",
    "test_data['week'] = test_data['sell_date'].apply(getWeek) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_data['bulid_age'] = train_data['year'] - train_data['bulid_year']\n",
    "train_data['fix_age'] =  train_data['fix_year']\n",
    "train_data.fix_age[train_data['fix_age']>0] =train_data.year[train_data['fix_age']>0]-train_data.fix_age[train_data['fix_age']>0]\n",
    "\n",
    "test_data['bulid_year'] = test_data['year'] - test_data['bulid_year']\n",
    "test_data['fix_age'] =  test_data['fix_year']\n",
    "test_data.fix_age[test_data['fix_age']>0] =test_data.year[test_data['fix_age']>0]-test_data.fix_age[test_data['fix_age']>0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sell_date</th>\n",
       "      <th>sell_price</th>\n",
       "      <th>bedrooms_num</th>\n",
       "      <th>bathrooms_num</th>\n",
       "      <th>house_area</th>\n",
       "      <th>park_area</th>\n",
       "      <th>floors</th>\n",
       "      <th>score</th>\n",
       "      <th>structure_area</th>\n",
       "      <th>basement_area</th>\n",
       "      <th>bulid_year</th>\n",
       "      <th>fix_year</th>\n",
       "      <th>latitude</th>\n",
       "      <th>longitude</th>\n",
       "      <th>year</th>\n",
       "      <th>month</th>\n",
       "      <th>day</th>\n",
       "      <th>week</th>\n",
       "      <th>bulid_age</th>\n",
       "      <th>fix_age</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20150302</td>\n",
       "      <td>545000</td>\n",
       "      <td>3</td>\n",
       "      <td>2.25</td>\n",
       "      <td>1670</td>\n",
       "      <td>6240</td>\n",
       "      <td>1.0</td>\n",
       "      <td>8</td>\n",
       "      <td>1240</td>\n",
       "      <td>430</td>\n",
       "      <td>1974</td>\n",
       "      <td>0</td>\n",
       "      <td>47.6413</td>\n",
       "      <td>-122.113</td>\n",
       "      <td>2015</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>41</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20150211</td>\n",
       "      <td>785000</td>\n",
       "      <td>4</td>\n",
       "      <td>2.50</td>\n",
       "      <td>3300</td>\n",
       "      <td>10514</td>\n",
       "      <td>2.0</td>\n",
       "      <td>10</td>\n",
       "      <td>3300</td>\n",
       "      <td>0</td>\n",
       "      <td>1984</td>\n",
       "      <td>0</td>\n",
       "      <td>47.6323</td>\n",
       "      <td>-122.036</td>\n",
       "      <td>2015</td>\n",
       "      <td>2</td>\n",
       "      <td>11</td>\n",
       "      <td>2</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20150107</td>\n",
       "      <td>765000</td>\n",
       "      <td>3</td>\n",
       "      <td>3.25</td>\n",
       "      <td>3190</td>\n",
       "      <td>5283</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9</td>\n",
       "      <td>3190</td>\n",
       "      <td>0</td>\n",
       "      <td>2007</td>\n",
       "      <td>0</td>\n",
       "      <td>47.5534</td>\n",
       "      <td>-122.002</td>\n",
       "      <td>2015</td>\n",
       "      <td>1</td>\n",
       "      <td>7</td>\n",
       "      <td>2</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>20141103</td>\n",
       "      <td>720000</td>\n",
       "      <td>5</td>\n",
       "      <td>2.50</td>\n",
       "      <td>2900</td>\n",
       "      <td>9525</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9</td>\n",
       "      <td>2900</td>\n",
       "      <td>0</td>\n",
       "      <td>1989</td>\n",
       "      <td>0</td>\n",
       "      <td>47.5442</td>\n",
       "      <td>-122.138</td>\n",
       "      <td>2014</td>\n",
       "      <td>11</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>25</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20140603</td>\n",
       "      <td>449500</td>\n",
       "      <td>5</td>\n",
       "      <td>2.75</td>\n",
       "      <td>2040</td>\n",
       "      <td>7488</td>\n",
       "      <td>1.0</td>\n",
       "      <td>7</td>\n",
       "      <td>1200</td>\n",
       "      <td>840</td>\n",
       "      <td>1969</td>\n",
       "      <td>0</td>\n",
       "      <td>47.7289</td>\n",
       "      <td>-122.172</td>\n",
       "      <td>2014</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>45</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sell_date  sell_price  bedrooms_num  bathrooms_num  house_area  park_area  \\\n",
       "0   20150302      545000             3           2.25        1670       6240   \n",
       "1   20150211      785000             4           2.50        3300      10514   \n",
       "2   20150107      765000             3           3.25        3190       5283   \n",
       "3   20141103      720000             5           2.50        2900       9525   \n",
       "4   20140603      449500             5           2.75        2040       7488   \n",
       "\n",
       "   floors  score  structure_area  basement_area  bulid_year  fix_year  \\\n",
       "0     1.0      8            1240            430        1974         0   \n",
       "1     2.0     10            3300              0        1984         0   \n",
       "2     2.0      9            3190              0        2007         0   \n",
       "3     2.0      9            2900              0        1989         0   \n",
       "4     1.0      7            1200            840        1969         0   \n",
       "\n",
       "   latitude  longitude  year  month  day  week  bulid_age  fix_age  \n",
       "0   47.6413   -122.113  2015      3    2     0         41        0  \n",
       "1   47.6323   -122.036  2015      2   11     2         31        0  \n",
       "2   47.5534   -122.002  2015      1    7     2          8        0  \n",
       "3   47.5442   -122.138  2014     11    3     0         25        0  \n",
       "4   47.7289   -122.172  2014      6    3     1         45        0  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10000, 20)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['sell_date', 'sell_price', 'bedrooms_num', 'bathrooms_num',\n",
       "       'house_area', 'park_area', 'floors', 'score', 'structure_area',\n",
       "       'basement_area', 'bulid_year', 'fix_year', 'latitude', 'longitude',\n",
       "       'year', 'month', 'day', 'week', 'bulid_age', 'fix_age'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "var =['bedrooms_num', 'bathrooms_num',\n",
    "       'house_area', 'park_area', 'floors', 'score', 'structure_area',\n",
    "       'basement_area', 'bulid_year', 'fix_year', 'latitude', 'longitude',\n",
    "       'year', 'month', 'day','week','bulid_age','fix_age'] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9985, 18)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_data = train_data.loc[train_data['house_area']<8000]\n",
    "train_data = train_data.loc[train_data['sell_price']<5000000]\n",
    "train_data = train_data.loc[train_data['park_area']<600000]\n",
    "train_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAD8CAYAAABQFVIjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3X+QHOV95/H3d1cjGGHDSjb4xApZ2FHJZ8KBQGfkcJVycIwE/oGK2AZCDsXHlVKOcxWwS4l0oYof5grldA4OlcQxtokhdrAI4EU2OLIKcF0dBxjJkpBl0En4B9KKGDnSyjZaYLX63h/z9NI7293TM9u78+vzqpramae7p7t3dvs7/Tzf53nM3REREZmsnmYfgIiIdAYFFBERKYQCioiIFEIBRURECqGAIiIihVBAERGRQiigiIhIIRRQRESkEAooIiJSiBnNPoDp8ta3vtUXLFjQ7MMQEWkrW7du/YW7n5pn3a4JKAsWLGDLli3NPgwRkbZiZj/Lu66qvEREpBA1A4qZLTKz7bHHL83sOjObY2abzWxP+Dk7rG9mdoeZ7TWzZ83svNh7rQzr7zGzlbHy881sZ9jmDjOzUF73PkREpDlqBhR33+3u57r7ucD5wFHgm8Aa4FF3Xwg8Gl4DXAIsDI9VwBegEhyAG4ELgPcAN0YBIqyzKrbd8lBe1z5ERKR56q3yej/wgrv/DLgMuDuU3w2sCM8vA+7xiqeAPjObCywDNrv7IXc/DGwGlodlJ7v7k14ZS/+eqveqZx8iItIk9QaUK4F7w/O3uftLAOHnaaG8H9gX22Z/KMsq359Q3sg+RESkSXJneZnZTOAjwNpaqyaUeQPljexj/Epmq6hUiTF//vwabyki0lkGtg2yftNuDgwNc3pfmdXLFrFi8dR9967nDuUS4Afu/vPw+udRNVP4+XIo3w+cEdtuHnCgRvm8hPJG9jGOu9/p7kvcfcmpp+ZKoxYR6QgD2wZZ++BOBoeGcWBwaJi1D+5kYNvglO2znoByFW9UdwFsBKJMrZXAQ7Hya0Im1lLgSKiu2gRcbGazQ2P8xcCmsOxXZrY0ZHddU/Ve9exDRESA9Zt2MzwyOq5seGSU9Zt2T9k+c1V5mdks4APAH8WK1wH3mdm1wIvAx0L5I8ClwF4qGWGfAHD3Q2b2WeCZsN4t7n4oPP8k8FWgDHwnPOreh4iIVBwYGq6rvAi5Aoq7HwXeUlX2b1SyvqrXdeBTKe9zF3BXQvkW4DcTyuveh4iIwOl9ZQYTgsfpfeUp26d6youIdKDVyxZRLvWOKyuXelm9bNGU7bNrxvISEekmUTbXdGZ5KaCIiHSoFYv7pzSAVFOVl4iIFEIBRURECqGAIiIihVBAERGRQiigiIhIIRRQRESkEAooIiJSCAUUEREphAKKiIgUQgFFREQKoYAiIiKFUEAREZFCKKCIiEghFFBERKQQCigiIlIIBRQRESmEAoqIiBQiV0Axsz4zu9/Mnjez58zsvWY2x8w2m9me8HN2WNfM7A4z22tmz5rZebH3WRnW32NmK2Pl55vZzrDNHWZmobzufYiISHPkvUP5a+Bf3P1dwDnAc8Aa4FF3Xwg8Gl4DXAIsDI9VwBegEhyAG4ELgPcAN0YBIqyzKrbd8lBe1z5ERKR5agYUMzsZ+G3gKwDu/rq7DwGXAXeH1e4GVoTnlwH3eMVTQJ+ZzQWWAZvd/ZC7HwY2A8vDspPd/Ul3d+CeqveqZx8iItIkee5Q3gEcBP7BzLaZ2ZfN7CTgbe7+EkD4eVpYvx/YF9t+fyjLKt+fUE4D+xARkSbJE1BmAOcBX3D3xcArvFH1lMQSyryB8iy5tjGzVWa2xcy2HDx4sMZbiojIZOQJKPuB/e7+dHh9P5UA8/Oomin8fDm2/hmx7ecBB2qUz0sop4F9jOPud7r7Endfcuqpp+Y4VRERaVTNgOLu/wrsM7NFoej9wI+AjUCUqbUSeCg83whcEzKxlgJHQnXVJuBiM5sdGuMvBjaFZb8ys6Uhu+uaqveqZx8iItIkM3Ku99+Ar5vZTODHwCeoBKP7zOxa4EXgY2HdR4BLgb3A0bAu7n7IzD4LPBPWu8XdD4XnnwS+CpSB74QHwLp69iEiIs1jlcSqzrdkyRLfsmVLsw9DRKStmNlWd1+SZ131lBcRkUIooIiISCEUUEREpBAKKCIiUggFFBERKYQCioiIFEIBRURECqGAIiIihVBAERGRQiigiIhIIRRQRESkEAooIiJSiLyjDYuITLuBbYOs37SbA0PDnN5XZvWyRaxYrMlZW5UCioi0pIFtg6x9cCfDI6MADA4Ns/bBnQAKKi1KVV4i0pLWb9o9FkwiwyOjrN+0u0lHJLUooIhISzowNFxXuTSfAoqItKTT+8p1lUvzKaCISEtavWwR5VLvuLJyqZfVyxY16YikFjXKi0hLihrei8ryUsbY1FNAEZGWtWJxfyEXfWWMTY9cVV5m9lMz22lm281sSyibY2abzWxP+Dk7lJuZ3WFme83sWTM7L/Y+K8P6e8xsZaz8/PD+e8O21ug+RESqKWNsetTThvI77n6uuy8Jr9cAj7r7QuDR8BrgEmBheKwCvgCV4ADcCFwAvAe4MQoQYZ1Vse2WN7IPEZEkyhibHpNplL8MuDs8vxtYESu/xyueAvrMbC6wDNjs7ofc/TCwGVgelp3s7k+6uwP3VL1XPfsQEZlAGWPTI29AceC7ZrbVzFaFsre5+0sA4edpobwf2Bfbdn8oyyrfn1DeyD5ERCZQxtj0yNsof6G7HzCz04DNZvZ8xrqWUOYNlGfJtU0IfqsA5s+fX+MtRaRTFZ0xJslyBRR3PxB+vmxm36TSBvJzM5vr7i+F6qaXw+r7gTNim88DDoTy91WVfy+Uz0tYnwb2UX3cdwJ3AixZsqRWkBKRDlZUxpikq1nlZWYnmdmbo+fAxcAPgY1AlKm1EngoPN8IXBMysZYCR0J11SbgYjObHRrjLwY2hWW/MrOlIbvrmqr3qmcfIiLSJHnuUN4GfDNk8s4A/snd/8XMngHuM7NrgReBj4X1HwEuBfYCR4FPALj7ITP7LPBMWO8Wdz8Unn8S+CpQBr4THgDr6tmHiIg0j1USqzrfkiVLfMuWLc0+DBGRtmJmW2PdRTJpLC8RESmEAoqIiBRCY3mJiLSpVhvwUgFFRKQNteKAl6ryEhFpQ6044KUCiohIG2rFAS9V5SUiDWu1OvxucnpfmcGE4NHMAS91hyIiDYnq8AeHhnHeqMMf2DbY7EPrCq044KUCiog0pBXr8LvJisX93Hb52fT3lTGgv6/MbZefrSwvEWk/rViH321abcBL3aGISEM0aZVUU0ARkYa0Yh2+NJeqvESkIZq0SqopoIhIw1qtDl+aS1VeIiJSCN2hiEhLU+fJ9qGAIiItqxUHQJR0qvISkZalzpPtRQFFRFqWOk+2FwUUEWlZ6jzZXnIHFDPrNbNtZvbt8PpMM3vazPaY2QYzmxnKTwiv94blC2LvsTaU7zazZbHy5aFsr5mtiZXXvQ8R6RzqPNle6rlD+VPgudjrvwRud/eFwGHg2lB+LXDY3X8DuD2sh5m9G7gSOAtYDvxdCFK9wN8ClwDvBq4K69a9DxHpLK04AKKkM3evvZLZPOBu4H8AnwY+DBwE/p27HzOz9wI3ufsyM9sUnj9pZjOAfwVOBdYAuPtt4T03ATeFXdzk7stC+dpQtq7efXjGySxZssS3bNmS/zcjIiKY2VZ3X5Jn3bx3KJ8H/gw4Hl6/BRhy92Ph9X4g+srQD+wDCMuPhPXHyqu2SStvZB8iItIkNQOKmX0IeNndt8aLE1b1GsuKKq+1/zFmtsrMtpjZloMHDyZsIiIiRcnTsfFC4CNmdilwInAylTuWPjObEe4Q5gEHwvr7gTOA/aE66hTgUKw8Et8mqfwXDexjHHe/E7gTKlVeOc5VpK2pV7k0U807FHdf6+7z3H0BlUb1x9z9auBx4KNhtZXAQ+H5xvCasPyx0LaxEbgyZGidCSwEvg88AywMGV0zwz42hm3q3YdI19KUvNJskxl65c+Bb5jZrcA24Cuh/CvAP5rZXip3DVcCuPsuM7sP+BFwDPiUu48CmNmfAJuAXuAud9/VyD5EOlmtu4+sXuWtdJeiu6jOlSvLqxMoy0vaWfWYVlDpjxFPoT1zzcMTGxKpNDj+ZN0Hp+dAa8hzHtJapiLLS0SaKO3u4zP37Rir0mqHXuUam6uzKaCItIG0satG3cfaSdqhV7nG5upsGr5eZBo12n5wSrnE0PBI4rLoG/4Tay4CWntK3tP7ygwmBI9WuouSximgiEyTRuf2GNg2yCuvH0tdDm98w2/1KXlXL1uU2IbSSndR0jhVeYlMk0bbD9Zv2s3IaHbyTLt8w9fYXJ1NdygiUyCpaiupqgdILY/Ual9ot2/4rX4XJY1TQBEpWFrVlhkkZen3WtJIQm9Ia3eAyjf8Vmsnke6lKi+RgqVVbaV1+Rqt0RcsLXvr81ecyxNrLlIwkZahOxSRgtWbAttfo/0jChitnL0lAgooImOKGhIkrYqqr1zitWPHEzOcsvatoUqkXSigiNB4Sm+StNTYmz5yFjDxTgNI3XfWMgUVaTUay0sEuHDdY4l3Ff195bEOg/Wo564ibd+9ZqntK40el0i96hnLS3coIhQ/JEg9qbFZw6rUu00juqlKrZvOtRmU5SVCcwdWbGQfRR1XN82h0k3n2iwKKCKkp+ZOR4fBpH1nKfK4umn0324612ZRlZcI9aXmFl1tUr3vnhptJ0VW06RVndXqvd+ONNLx1FNAEQni7R5R0Lh+w/ZxQaPIbLCsfU/XJFRpKc4WjqOT2hc00vHUU5WXSJWsuvbpqDaZzgEUVy9bRNLALw4dVxXUDvPFtDvdoUhHa6R6KitoTFe1yXQNoLhicT/XbdieuKzTqoI04sDUU0CRjpVUPXX9hu1s+dkhbl1xdup2WUGjE6tN+jvwnNJopOOpVbPKy8xONLPvm9kOM9tlZjeH8jPN7Gkz22NmG8xsZig/IbzeG5YviL3X2lC+28yWxcqXh7K9ZrYmVl73PkQiSXcaDnz9qRczU0WzUoh/512nJi5LK28HqgqSouRpQ3kNuMjdzwHOBZab2VLgL4Hb3X0hcBi4Nqx/LXDY3X8DuD2sh5m9G7gSOAtYDvydmfWaWS/wt8AlwLuBq8K61LsPkbi0O41a7QNpabxHXz/Gt3e8lLhNdfnAtkEuXPcYZ655mAvXPdbSfR006ZUUpWZA8Ypfh5el8HDgIuD+UH43sCI8vyy8Jix/v5lZKP+Gu7/m7j8B9gLvCY+97v5jd38d+AZwWdim3n2IjOmbVUpdltU+EF1g+8rjtz98dCR1Xveh4ZGxoJHUqH/9hu3cMLAzcdtWsGJxP6uXLeL0vjIHhoZZv2l3SwdBaU25srzCncR24GVgM/ACMOTu0UTX+4Ho60w/sA8gLD8CvCVeXrVNWvlbGtiHCFC5qP/61fR52Gu1D6xY3M9JJ9TXxBjd9TRa1dZM6kUuRcj1H+Puo8C5ZtYHfBP490mrhZ9pWYhp5UlBLWv9rH2MY2argFUA8+fPT9hEOtX6TbsZOZ7cOTBv+0C9WU7R+nmq2qYq06jRTpdZmW2q+pK86uqH4u5DwPeApUCfmUUBaR5wIDzfD5wBEJafAhyKl1dtk1b+iwb2UX28d7r7Endfcuqp7dtoKvXLCgZ52wfS7mJ6UipXo/Wz7n6i6q+puBOYzF2GepFLEfJkeZ0a7kwwszLwu8BzwOPAR8NqK4GHwvON4TVh+WNeGSN/I3BlyNA6E1gIfB94BlgYMrpmUmm43xi2qXcfIkD6Rb2/r5z7G3da9tPvXzA/MysqrbNgpPoPtaiOkZPpdNnMwTGlc+S5Q5kLPG5mz1K5+G92928Dfw582sz2Umm/+EpY/yvAW0L5p4E1AO6+C7gP+BHwL8Cn3H00tIH8CbCJSqC6L6xLvfsQiRSRCpuW/XTrirMzs6JWLO7n6qXzJwSVrCBTxJ3AZO4ylDosRdAEW9KxihrEsdH3qd4ua8DFIibMmuwkYdHxDg4Nj03uVfRglNJ+6plgSwFFJEORAzWmXfANuP2Kcyd90S7iWJPew6hU0ym4dCfN2Chdr967irRv56+8dqyw7KekueYNuHrp/EIu0kWMVZWW8gyaz15qU0CRjlPvEPPV60dzkWRVUUXtEvUErukYnHCyY1XVam9RKrFkUUCRjlNvn4qk9Ws5va/c0Nwok73gT/Wc6LXaekCpxJJO86FIS2tkTKx6s53qvUAalcEg0wLXZ+7bMSVjeE1Hb/Y80xErlVjSKKBIy2r0Alpvn4pTyuljfsHEdF8HHtg6mPpNftR9Si740z25F0w8d6USSxZVeUnLqqfqKl4V1DerRKnHxg29knYhHNg2yCuvp4/5BQlj+oTj6M2Y+73W8dZrYFt6AJvKyb2KqGKb6mo6aR0KKNKy8lZRVbdlHD46QqnX6CuXODI8MjaPSdIc8es37WZktLHU+VF3yqXemu0v9V7wqy/Av/OuU3lga/pdjlNJSZ6KC3UjbT7Vwf3Xrx4bC+7KFOtsCijSsvLOjph0JzMy6px0wgy233hxZuP5ZL7dR/0yonTjrPOI1Pq2nnSsX3/qxcS7pLipulA3kn5dHdyrKVOsc6kNRVrW6mWLKPWOr8Uv9dq4qqs8VUFZVWeNNjBHxxHNI5LWkB2vasvTJpTVD6SW6vaUyU7y1UgbVt6MuenIFGunSc46hQKKtITUf/7qq6mP3yb6Vp4kChZZVWd5spqSnDRzxrh+JUkX0V6zcb3U8zSqT/ZCG+8fM5mMsIFtg3zmvh11JwHkPf6pzhTT/C7NoYAiTZf2z3/Txl0T5jQZOe6ZE1lF4ncGWVlf1QNA9uac+PNIbObGtIvocfdx1Tp52oTSjjXvQJPR9pPJCIs+j7SEg6ygkSdQTEem2HRkxMlECijSdGn//GnT7daayArGz3lSayTdFYv7eWLNRdx+xbmcXM7XrBi/cOZNU05bLz5VcdqxXr10/rjRja9emj2E/mT63NSqtsoKGknHHyVITOd89ZrfpTnUKC9NEW/srTfHKj6RVdrouvELVrzKKRqrK+qAeN2G7fTHMqny1P+Xesa34ySN0ZX0LXz1skWsvn/HhKyyX796jIFtg+MyqvI0hC95+5zU9fImNCTJuujWuruYjuFl8pjM+UvjNNqwTLukEW3zio/MW+/IuFn7jbbL46SZvey6ZfmEc6q+iMLEC+tNG3el3nkVOZrvZEYeThsVudeMz338nLbIzipylOhup+HrEyigtI60C1ZepR4YOV55ftLMXkq9PQwNj0wICtUXkMnuN+7zNYabT7ug1QqiRV30BrYNcvO3do2l7faVS3zonLk8/vzBmncOnXIxVofKYiigJFBAaR0L1jycusyoVEscff1YYh+GJKVe46SZMxK/+ccnlzpzzcN1V6+lqTVpVda3/Fq96yc72VZSQCj1GjgTRg9ICxK6GEtE86FIyxrYNphavRS/kNZTLTYy6jUb8CHfSLp51Rq+Pq0dYtR9wrAwWcfciLSOntWyOhhOdlRk6U7K8pJptX7T7tS7hKOvHxvrhwKVTK3JijfCNtrnJO19s/o6pDX+zp5Vyp5cnspglZPplFdPQFLWkxRJAUWmVdYF7PDRkXEXZsjfL2T2rFJmGi1MHEk373unjbib1dchLf3XPfluIe71Y6OT6pRXTyaTsp6kSDUDipmdYWaPm9lzZrbLzP40lM8xs81mtif8nB3KzczuMLO9ZvasmZ0Xe6+VYf09ZrYyVn6+me0M29xhVvlPb2Qf0tryXsCiC/NVF5xRc93eHuPGD581roNiX7nEiaUert+wfdw3/KjPyU/XfZAXbruUz19xbs27FueNoBLvR5EWHAeHhid0mIy2O5JSNRd3dOT4pDrlpfUFKfWMD40ail6KlqcN5RjwGXf/gZm9GdhqZpuBPwQedfd1ZrYGWAP8OXAJsDA8LgC+AFxgZnOAG4ElVP5Ht5rZRnc/HNZZBTwFPAIsB74T3jP3Pib7y5Bi3TCwk3uf3seoO71mXHXBGYl9NtIcGBrm1hWVaq/ofZJE34qiev+kARav27Cdm7+1ixs/fFZiH5V4RlQSp3JHc2BoeOzCntYmYzChX0mk1kCSWfJWT6X1BUkqq6edRA31UkvdWV5m9hDwN+HxPnd/yczmAt9z90Vm9sXw/N6w/m7gfdHD3f8olH8R+F54PO7u7wrlV0XrRdvm3Ye7v5R23Mrymrx6Lig3DOzka0+9OKH8D5bOH+uQF3UyzMp6ijodPvzsS5kX/HiDflZ6cKnHeNOJMxg6OjLhHBbf8t3cmWUG/NY75/B/XzhUM8EgrlayQXR8Sccx2eyvyWhmKrECWXNNWZaXmS0AFgNPA2+LLuDhgn9aWK0f2BfbbH8oyyrfn1BOA/tIDSgyOfXOn37v0/smlEXlS94+h6NhUqtaKbSDQ8OJgala/Nt71jf5keM+drGOnwMkD7WexiE1mGQdQ3WvfTOIfgV95RI3feQsgFw976dTPZOdNSItaOT9u1PQaQ25A4qZvQl4ALjO3X9p6Q2aSQu8gfLMw8mzjZmtolKVxvz582u8pWRJu6DctHFXYtVKWqAYdU8cfmSyqsfWylutNDwyynUbttdKvErkMC4gxGVNK1xdJZXWQ76VLpBTOTZWVtDIE8jq/bIjUydXQDGzEpVg8nV3fzAU/9zM5saqo14O5fuBeEvqPOBAKH9fVfn3Qvm8hPUb2cc47n4ncCdUqrzynKskS7twDA2PjPUBGRwaZvX9OxitESyKDialXuOV1yopx9EMhxu+vy+zr0e1Ro8o7QYrK4EszwUwqx9Inkm6ig5Gp5RLiX19sgJnXllBI08gm+q7J8kvT5aXAV8BnnP3v4ot2ghEmVorgYdi5deETKylwJFQbbUJuNjMZodsrYuBTWHZr8xsadjXNVXvVc8+ZIrkzc4aGXWOT/GxxJ00sxe8EtiiFNsN3983rceQZCij+qyIoeXTUorzLG+kf0tagMyZeZ0pK2jkGclZIwu3jjz9UC4E/jNwkZltD49LgXXAB8xsD/CB8BoqWVo/BvYCXwL+GMDdDwGfBZ4Jj1tCGcAngS+HbV6gkuFFvfuQqVNkp8Ai9JVLfP6Kc+mbNTNxzpTROu5OJmNWKflfKCsAZ10Aa13wawWjrOWTmXQqLUBmBc68soJGrakHam0v06tmlZe7/x/S+/a+P2F9Bz6V8l53AXcllG8BfjOh/N/q3YcUI6na5LbLz254yPnJig/XUi71YAbXb9g+7cdRzZk46GOtBvS0Np6+WaWaVWG1vo2ntR0NDg1z87d2JQabm7+1q2bV0FQOB581/H+e4fDzTh8gU0895WWCtG+yAE+suYifrPvgWG/z6RIPHMMjx8d61Tfb8MhxTpjRw+xZ+SeQyupFX6sqLOvbeDROWpq0LLbDR0dq3qXkuVNoVFon0Hh7UvR398Saiyb8bmttL9NHow3LBGn9OGbPKjFr5gwODA1zSrnEK68fG9fAHvXN+P5PD+dueO8rlzjy6khq4/Z0q2delLioTwZM7LwYdeqMT4h1SrmEWeViXmufBvxk3QeB5P4gBly9dD6PP3+w4U6Tefq4KDW3O2n4+gQKKPnlHeY93gkv6qDYY5C3+SK6CF+3YfukjrdVzJ5V4tWEYVMiPTAuWaDUU/md1fp9VV/sr/7SkzzxwqFx6+SZayVLPGiJxGn4epmUvP04Ro477uMvZvW0hUd9QDpFrY6R1ZlnedKao2ql6O4g7XMZHhnNNddK2t1QfF57kUapDUUmqCeja2h4ZFLfjCVd1BYAjLVpZRl1z/zcyqVerl46vzLZVpVoXvtaJjOsvnQ+BRSZcJEAxjVyRg3O0hxJqcBJDPi98/vHfW595fHJAreuOJsZPRM/zZHjXrMfzGTSjqU7KKB0uVoZXbdfcS6vjhxPrCYpl3orHQsll3r/2aLPIm9DuwOPP39w7HObNXMGR4ZHxg2Js/iW7zI8ktzts1ZHwMl0yJTuoDaUDlcrM6fWsBVJfRegkrl02+Vnc9PGXYCqvLJEWV6QPQx/krxtI5Goc2R1f5bV/7wDLHvYm1p9SrLmf0mirLDuozuUDpaniiLrIjGwbTC1oTm6wKXN5S4V5VIvn/v4OSx5+xwe2DpYVzCJ1GobiTu9r5w8p/xxr5nKXatPSVrAieZ/iVP1WHdSQOlgeaoosr6Vrn3w2dRlBqy+f8ekj7HTRb/vvO0gSaL2j1qdSaOMsEbGsJo9q1Tz7mH1skWpw3xXV3upeqw7KaB0qIFtg6lVEfExo7Lq59Pq2qFyESl61OBONTg03HCHw/gQJE+suSgzOWJ4ZJTP3Lej7o6Z5VIvN374rJrrrVjcn3v+Fw3Y2J0UUDpQVN2QxqmMg9XoRU6mR9IQIrXaOdKq1Eo9lpgu3Fcu1TVMSdpdUvVxacDG7qRG+Q6Up3pF9xatrXpwxEjSQIi19Pc1Pqd8dcP677zrVB7YOlhzIEYN2NidFFA6kKoV2l/WBFEnlnpyBxSDccO21JNllZQt9sDWQX7v/H4ef/5gZmDKM0qwdB4FlA5UueA0e4opmazqLwZpA0Nm3W1OpooprWE96usS3b1cv2E76zftnhAwsmadlM6kgNKGsvL7bxjYqWDSIU7vK3PDwM7MvitOelCZbBVTrYnANI+7VFOjfJupld9/79P7mnuAMk6vGRZ+1qNc6mXBW8p87akXa/Zdcd5oLI/2U8ScIFkN60oLliS6Q2kztf6RG+k4J1Oj1GOs/9g5rFjcz5lrHs69XdSI/pn78vXzSZvLJEoNj9/JQv52jayG9etTRolOqqabbCKA2l7ah+5Q2kxWz/asVGFpgthNSd62jCg4rFjcn/vLwSuvTRwpOOlOdvX9O1j9zzty917PmgkxT1pwI73lk7a5fsN2bhjQ33Y70ARbbWbxLd9NHA6lnvGeZHrNKvVwdOR4rtkgZ88q8cH/MLfu2Rejycqib/K1Oq3G5ZmtsVpSgkDeY8jaX9o2Btx+xbm6U2mCeibYqnmHYmZ3mdnLZvbDWNkcM9tsZnvCz9mh3MzsDjOHDCX9AAAMDklEQVTba2bPmtl5sW1WhvX3mNnKWPn5ZrYzbHOHWaUSuJF9dIrq4eRvGNjJheseY8GahxODSalXwaSVHQ1JElEDOrzR1lHdsnL46Ahfe+rFzGBQLk38t61uv6gndbyRNPM887g30ls+bVnS8C7SevJUeX0VWF5VtgZ41N0XAo+G1wCXAAvDYxXwBagEB+BG4ALgPcCNUYAI66yKbbe8kX10iqRb/loXmJHRytS70vqioBJ9Aajna0CvGX+wdD6v5hh+vp504UZTi6PhYH6y7oNj1XR53jdrf1nL1L+q9dUMKO7+v4FDVcWXAXeH53cDK2Ll93jFU0Cfmc0FlgGb3f2Qux8GNgPLw7KT3f1Jr9S93VP1XvXsoyM0OohgPVPvSnM1+lG9cNul3Lri7FwX6qRZN0u9Rqnqm8dU9l5POoZa+0sbgBI0bEs7aLRR/m3u/hJA+HlaKO8H4nmr+0NZVvn+hPJG9tHWbhjYyTvXPqLxtSTTwLZBXnntWOKyQ6+8ljrrZn9fmfUfPYf1Hzsns5qqSHmqxZK2uXrp/AlBRcO2tIei04bTRreut7yRfUxc0WwVlWox5s+fX+Ntm+eGgZ187akXm30Y0uKu/tKT/ODFI6l3sFGH1iib6rbLz05s/J7Ohu2s3vJp6cG3rjibJW+fo9ThNtRoQPm5mc1195dCddPLoXw/cEZsvXnAgVD+vqry74XyeQnrN7KPCdz9TuBOqGR51XOC02Vg26CCieTyxAvVNc/pssYCawW1etpr2Jb21GiV10YgytRaCTwUK78mZGItBY6E6qpNwMVmNjs0xl8MbArLfmVmS0N21zVV71XPPtpGVL21YM3DXJfSQUxkslq5EVs97TtTnrThe4EngUVmtt/MrgXWAR8wsz3AB8JrgEeAHwN7gS8Bfwzg7oeAzwLPhMctoQzgk8CXwzYvAN8J5XXto11E1VtK85VyqZfZs0pT9v5OpV9HK067qwm4OlPNKi93vypl0fsT1nXgUynvcxdwV0L5FuA3E8r/rd59tDpVb0mk14zbLj8boO75TerRqoM2nt5XTkxAUSZXe9PQK9Ok1iyK0l2Ou4+1E9x2+dn0lfPdqZRLPWNZU33lErNnlTAqPezT3qMVq5IaSSmW1qfBIadQPIulR0OjdJXeHmM0o3NQ/Jt4FFgW5BhA8tWR45nDpJy55uHElMdWq0rSBFydSQFlilRnsSiYdJc3nzCDoeGJw+RA+jfx/pRqoLhTatzJtFNVkjK5Oo+qvKZIoz3epTMcSQkmQGrnvqRqoGq/fHUks5FdVUnSTLpDmSLq8d69yqUe5px0QuLfQNZEW/FqoLS/n+NOZiO7qpKkmTR8/RRQz/fuVuo1rviPZ/DA1sHEu9TqYd6T1Bp+vpEh50UaUc/w9bpDKUDU+D44NJxrzgvpbCOjzuPPH+T3zu9P/GKRpxd70myJca3WyC4CCiiTNrBtkNX372BktP7hyKVzDQ4Ns+GZfanLawWEKNh85r4diQkdrdjILqJG+Un6i2/uHAsmInFZfxd5AsKKxf187uPnqJFd2obuUOoU71syowdS5joSSVVPQFAju7QTBZQ6VPctUTCRcqk3ta0kSTTkSj0BQf01pF2oyqsO6lsicVFwuHVFZRKpWsqlXj738XMUHKRjKaDUMLBtkAvXPcaZax5W3xIZUx0cEqfc7bGxsbamenZEkVagKq8M1VVc0t7KpV5OmNGTOiRK3nX6E9ox1NYhooCSae2Dz45NqyrtLWu4+KjvUBQoktbJ0xlRbR3S7RRQUtwwsFPBpEMkBYM8dxK62xCpj4ZeSfHOtY9ohOA20BumBUgboSCpekpE8tPQKwVQMGl98TuPeP8g3VGINIcCSopeTYg1rfrKJW76yFljQeCGgZ18/ekXiT6CWaUeLj9/Ho8/fzAxaKj9QqT5FFBSXHXBGRoxeIpUN4InBYJbV1T6d4hI+2jbgGJmy4G/BnqBL7v7uiLfP7qYff2pFzXgYw0G/NY757DrwK/G0m3jbRrlUg8nlnoZOjqi6iiRDtaWjfJm1gv8P+ADwH7gGeAqd/9R2jaTmQ/l3Ju/m9kvoROVeuBNJ5YUBES6XDc0yr8H2OvuPwYws28AlwGpAWUybvrIWXx6w3Y6KYl49qwSN374LAUJESlMuwaUfiA+2cR+4IKp2ll00W21jo5RUNjys0Pc+/Q+Rt3pNeOqC85Q+4OITLt2DShJE3NPqLszs1XAKoD58+dPaodRFtHAtkH++4PPcnSKAsvC005i86ffV/exKYCISLO1a0DZD5wRez0POFC9krvfCdwJlTaUInZcnZ46sG2Qm7+1i8NHK20sfeUSHzpnLt/8wSCvvD5+DDB1shORTtaujfIzqDTKvx8YpNIo//vuvittm8k0youIdKuOb5R392Nm9ifAJippw3dlBRMREZl6bRlQANz9EeCRZh+HiIhUaIItEREphAKKiIgUQgFFREQK0ZZZXo0ws4PAz8LLtwK/aOLhNJvOX+ev8+9e9Z7/29391Dwrdk1AiTOzLXnT4DqRzl/nr/PX+U/Fe6vKS0RECqGAIiIihejWgHJnsw+gyXT+3U3n392m7Py7sg1FRESK1613KCIiUrCuCihmttzMdpvZXjNb0+zjKYqZnWFmj5vZc2a2y8z+NJTPMbPNZrYn/Jwdys3M7gi/h2fN7LzYe60M6+8xs5XNOqdGmFmvmW0zs2+H12ea2dPhXDaY2cxQfkJ4vTcsXxB7j7WhfLeZLWvOmdTPzPrM7H4zez78Hby3mz5/M7s+/O3/0MzuNbMTO/3zN7O7zOxlM/thrKywz9zMzjeznWGbO8wsadqQ8dy9Kx5UBpF8AXgHMBPYAby72cdV0LnNBc4Lz99MZSTmdwP/E1gTytcAfxmeXwp8h8q8MkuBp0P5HODH4efs8Hx2s8+vjt/Dp4F/Ar4dXt8HXBme/z3wyfD8j4G/D8+vBDaE5+8OfxcnAGeGv5feZp9XznO/G/iv4flMoK9bPn8qE+79BCjHPvc/7PTPH/ht4Dzgh7Gywj5z4PvAe8M23wEuqXlMzf6lTOMv/73AptjrtcDaZh/XFJ3rQ8AHgN3A3FA2F9gdnn8RuCq2/u6w/Crgi7Hyceu18oPKnDiPAhcB3w7/BL8AZlR//lRGqX5veD4jrGfVfxPx9Vr5AZwcLqhWVd4Vnz9vzOA6J3ye3waWdcPnDyyoCiiFfOZh2fOx8nHrpT26qcoradrgjpvpKty+LwaeBt7m7i8BhJ+nhdXSfhft/Dv6PPBnQDSV5luAIXc/Fl7Hz2XsPMPyI2H9dj3/dwAHgX8IVX5fNrOT6JLP390Hgf8FvAi8ROXz3Er3fP5xRX3m/eF5dXmmbgoouaYNbmdm9ibgAeA6d/9l1qoJZZ5R3tLM7EPAy+6+NV6csKrXWNaW50/lW/Z5wBfcfTHwCpXqjjQddf6hneAyKtVUpwMnAZckrNqpn38e9Z5zQ7+LbgoouaYNbldmVqISTL7u7g+G4p+b2dywfC7wcihP+1206+/oQuAjZvZT4BtUqr0+D/RZZXZPGH8uY+cZlp8CHKJ9z38/sN/dnw6v76cSYLrl8/9d4CfuftDdR4AHgd+iez7/uKI+8/3heXV5pm4KKM8AC0Pmx0wqjXEbm3xMhQjZF18BnnP3v4ot2ghEWRsrqbStROXXhMyPpcCRcHu8CbjYzGaHb30Xh7KW5u5r3X2euy+g8rk+5u5XA48DHw2rVZ9/9Hv5aFjfQ/mVIQvoTGAhlYbJlubu/wrsM7NFoej9wI/oks+fSlXXUjObFf4XovPvis+/SiGfeVj2KzNbGn6n18TeK12zG5WmuQHrUioZUC8Af9Hs4ynwvP4TldvRZ4Ht4XEplXrhR4E94eecsL4Bfxt+DzuBJbH3+i/A3vD4RLPPrYHfxft4I8vrHVQuCHuBfwZOCOUnhtd7w/J3xLb/i/B72U2OrJZWeQDnAlvC38AAlYydrvn8gZuB54EfAv9IJVOroz9/4F4qbUYjVO4ori3yMweWhN/nC8DfUJX0kfRQT3kRESlEN1V5iYjIFFJAERGRQiigiIhIIRRQRESkEAooIiJSCAUUEREphAKKiIgUQgFFREQK8f8BcAXnO6J7Fi8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.scatter(train_data['house_area'],train_data['sell_price'])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0xb9bb358>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#correlation matrix\n",
    "import seaborn as sns\n",
    "corrmat = train_data.corr()\n",
    "f, ax = plt.subplots(figsize=(12, 8))\n",
    "sns.heatmap(corrmat, vmax=0.8, square=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.layers import Dense,Dropout,Activation,Input\n",
    "from keras.models import Sequential,Model\n",
    "from sklearn.model_selection import train_test_split\n",
    "from keras import metrics\n",
    "from keras.optimizers import SGD,Adam"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_model(InputSize):\n",
    "    model=Sequential()\n",
    "    model.add(Dense(units=90,activation='relu',input_shape=(InputSize,)))\n",
    "    model.add(Dropout(0.1))\n",
    "    model.add(Dense(units=50,activation='relu'))\n",
    "    model.add(Dropout(0.1))\n",
    "    model.add(Dense(units=1,activation=None))\n",
    "    model.compile(loss='mean_squared_error',optimizer='adam',metrics=[metrics.mae])\n",
    "    print(model.summary())\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_4 (Dense)              (None, 90)                1710      \n",
      "_________________________________________________________________\n",
      "dropout_3 (Dropout)          (None, 90)                0         \n",
      "_________________________________________________________________\n",
      "dense_5 (Dense)              (None, 50)                4550      \n",
      "_________________________________________________________________\n",
      "dropout_4 (Dropout)          (None, 50)                0         \n",
      "_________________________________________________________________\n",
      "dense_6 (Dense)              (None, 1)                 51        \n",
      "=================================================================\n",
      "Total params: 6,311\n",
      "Trainable params: 6,311\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n",
      "Train on 9000 samples, validate on 1000 samples\n",
      "Epoch 1/100\n",
      "9000/9000 [==============================] - 1s 88us/step - loss: 385058100201.2444 - mean_absolute_error: 489946.5051 - val_loss: 340875350900.7360 - val_mean_absolute_error: 433306.0035\n",
      "Epoch 2/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 262051643479.3813 - mean_absolute_error: 356018.7319 - val_loss: 223831954423.8080 - val_mean_absolute_error: 268606.9020\n",
      "Epoch 3/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 141671542984.2489 - mean_absolute_error: 216691.6775 - val_loss: 113677074071.5520 - val_mean_absolute_error: 193316.4421\n",
      "Epoch 4/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 95436628572.3876 - mean_absolute_error: 190403.2144 - val_loss: 96623421980.6720 - val_mean_absolute_error: 190054.7079\n",
      "Epoch 5/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 88922732727.8649 - mean_absolute_error: 189918.1520 - val_loss: 94014484774.9120 - val_mean_absolute_error: 187561.9639\n",
      "Epoch 6/100\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 86018075787.2640 - mean_absolute_error: 188401.1960 - val_loss: 91770967392.2560 - val_mean_absolute_error: 187080.4399\n",
      "Epoch 7/100\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 83257452076.1458 - mean_absolute_error: 185740.9777 - val_loss: 90657181597.6960 - val_mean_absolute_error: 182498.1726\n",
      "Epoch 8/100\n",
      "9000/9000 [==============================] - 0s 44us/step - loss: 82135888749.4542 - mean_absolute_error: 183265.4176 - val_loss: 86991534850.0480 - val_mean_absolute_error: 180288.0736\n",
      "Epoch 9/100\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 78760099694.3645 - mean_absolute_error: 180638.0366 - val_loss: 84405563359.2320 - val_mean_absolute_error: 177469.8987\n",
      "Epoch 10/100\n",
      "9000/9000 [==============================] - 1s 58us/step - loss: 77672305947.0791 - mean_absolute_error: 178759.5739 - val_loss: 83102437670.9120 - val_mean_absolute_error: 173349.7244\n",
      "Epoch 11/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 75929525616.6400 - mean_absolute_error: 177547.7948 - val_loss: 80308241399.8080 - val_mean_absolute_error: 176509.0757\n",
      "Epoch 12/100\n",
      "9000/9000 [==============================] - 0s 50us/step - loss: 74212840630.9547 - mean_absolute_error: 176758.2191 - val_loss: 79458518695.9360 - val_mean_absolute_error: 175296.7619\n",
      "Epoch 13/100\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 73723669228.2027 - mean_absolute_error: 176181.9909 - val_loss: 77637923143.6800 - val_mean_absolute_error: 171939.1583\n",
      "Epoch 14/100\n",
      "9000/9000 [==============================] - 0s 46us/step - loss: 72827347619.3849 - mean_absolute_error: 175906.3886 - val_loss: 76179713884.1600 - val_mean_absolute_error: 171895.9741\n",
      "Epoch 15/100\n",
      "9000/9000 [==============================] - 0s 51us/step - loss: 72735622838.4996 - mean_absolute_error: 175659.0450 - val_loss: 75985797545.9840 - val_mean_absolute_error: 171407.8083\n",
      "Epoch 16/100\n",
      "9000/9000 [==============================] - 0s 44us/step - loss: 71951340331.9182 - mean_absolute_error: 175225.6487 - val_loss: 76004426973.1840 - val_mean_absolute_error: 173730.6681\n",
      "Epoch 17/100\n",
      "9000/9000 [==============================] - 0s 50us/step - loss: 72475272140.1173 - mean_absolute_error: 176648.2494 - val_loss: 74984741437.4400 - val_mean_absolute_error: 170948.8511\n",
      "Epoch 18/100\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 71313442380.9138 - mean_absolute_error: 175810.7898 - val_loss: 74145341865.9840 - val_mean_absolute_error: 172148.0857\n",
      "Epoch 19/100\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 70061764779.1218 - mean_absolute_error: 175624.7956 - val_loss: 73919954419.7120 - val_mean_absolute_error: 173248.9099\n",
      "Epoch 20/100\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 70943701600.0284 - mean_absolute_error: 175516.0481 - val_loss: 73546081173.5040 - val_mean_absolute_error: 173087.7529\n",
      "Epoch 21/100\n",
      "9000/9000 [==============================] - 0s 50us/step - loss: 70626410144.6542 - mean_absolute_error: 175698.4210 - val_loss: 73983678513.1520 - val_mean_absolute_error: 174115.9020\n",
      "Epoch 22/100\n",
      "9000/9000 [==============================] - 0s 44us/step - loss: 69957577401.2302 - mean_absolute_error: 174932.9970 - val_loss: 73410940502.0160 - val_mean_absolute_error: 169492.4307\n",
      "Epoch 23/100\n",
      "9000/9000 [==============================] - 0s 45us/step - loss: 70747244888.0640 - mean_absolute_error: 175954.4538 - val_loss: 73682160304.1280 - val_mean_absolute_error: 168541.1759\n",
      "Epoch 24/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 69669986469.6604 - mean_absolute_error: 173993.6068 - val_loss: 73016839176.1920 - val_mean_absolute_error: 173212.8573\n",
      "Epoch 25/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 71817481755.7618 - mean_absolute_error: 175287.2839 - val_loss: 74016899497.9840 - val_mean_absolute_error: 176321.3284\n",
      "Epoch 26/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 71628947860.1387 - mean_absolute_error: 176656.1289 - val_loss: 73135627681.7920 - val_mean_absolute_error: 168456.3514\n",
      "Epoch 27/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 69363426976.6542 - mean_absolute_error: 173696.5143 - val_loss: 73380870881.2800 - val_mean_absolute_error: 168977.2508\n",
      "Epoch 28/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 69374060702.3787 - mean_absolute_error: 173549.9598 - val_loss: 72899883450.3680 - val_mean_absolute_error: 170497.1421\n",
      "Epoch 29/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 70077108369.6355 - mean_absolute_error: 175301.9131 - val_loss: 71944865677.3120 - val_mean_absolute_error: 170279.5612\n",
      "Epoch 30/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 68873762191.5876 - mean_absolute_error: 174364.7556 - val_loss: 72434105073.6640 - val_mean_absolute_error: 165828.4274\n",
      "Epoch 31/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 68445193524.5653 - mean_absolute_error: 173562.2216 - val_loss: 71332903813.1200 - val_mean_absolute_error: 169704.0871\n",
      "Epoch 32/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 69342037671.9360 - mean_absolute_error: 173367.5499 - val_loss: 72054442328.0640 - val_mean_absolute_error: 167842.2778\n",
      "Epoch 33/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 69185876958.3218 - mean_absolute_error: 173975.7453 - val_loss: 72564848738.3040 - val_mean_absolute_error: 167445.6904\n",
      "Epoch 34/100\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 69743896006.2009 - mean_absolute_error: 173537.7515 - val_loss: 71454923276.2880 - val_mean_absolute_error: 168449.8544\n",
      "Epoch 35/100\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 67965964166.0302 - mean_absolute_error: 173121.9959 - val_loss: 70781070606.3360 - val_mean_absolute_error: 170875.9781\n",
      "Epoch 36/100\n",
      "9000/9000 [==============================] - 0s 45us/step - loss: 68908190462.4071 - mean_absolute_error: 172887.7942 - val_loss: 70914408431.6160 - val_mean_absolute_error: 169000.6560\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 37/100\n",
      "9000/9000 [==============================] - 0s 46us/step - loss: 68478563461.8027 - mean_absolute_error: 171946.6480 - val_loss: 70323750567.9360 - val_mean_absolute_error: 167237.3440\n",
      "Epoch 38/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 67787298825.1022 - mean_absolute_error: 171590.0245 - val_loss: 70238031577.0880 - val_mean_absolute_error: 167092.8580\n",
      "Epoch 39/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 67679117981.9236 - mean_absolute_error: 172353.6777 - val_loss: 70833611358.2080 - val_mean_absolute_error: 166502.1888\n",
      "Epoch 40/100\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 68022379380.7360 - mean_absolute_error: 172159.8195 - val_loss: 70337902411.7760 - val_mean_absolute_error: 171812.5599\n",
      "Epoch 41/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 68508259989.7316 - mean_absolute_error: 173735.5311 - val_loss: 70432451837.9520 - val_mean_absolute_error: 166142.9901\n",
      "Epoch 42/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 66698712674.7591 - mean_absolute_error: 170537.4376 - val_loss: 71253828730.8800 - val_mean_absolute_error: 164596.5482\n",
      "Epoch 43/100\n",
      "9000/9000 [==============================] - 0s 45us/step - loss: 67525658476.5440 - mean_absolute_error: 170977.5441 - val_loss: 70650700726.2720 - val_mean_absolute_error: 172766.1601\n",
      "Epoch 44/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 67965034991.1609 - mean_absolute_error: 172499.2150 - val_loss: 71315123847.1680 - val_mean_absolute_error: 163487.7533\n",
      "Epoch 45/100\n",
      "9000/9000 [==============================] - 0s 45us/step - loss: 66928117470.5493 - mean_absolute_error: 170122.5298 - val_loss: 69326500364.2880 - val_mean_absolute_error: 167553.5495\n",
      "Epoch 46/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 67628939506.1191 - mean_absolute_error: 170734.9688 - val_loss: 69142645768.1920 - val_mean_absolute_error: 170307.7499\n",
      "Epoch 47/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 66972550423.4382 - mean_absolute_error: 170761.4683 - val_loss: 70065423138.8160 - val_mean_absolute_error: 166912.5573\n",
      "Epoch 48/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 66387506255.1893 - mean_absolute_error: 170203.8065 - val_loss: 68340795064.3200 - val_mean_absolute_error: 165680.5587\n",
      "Epoch 49/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 67448844116.8782 - mean_absolute_error: 171406.9700 - val_loss: 69862602620.9280 - val_mean_absolute_error: 162307.9848\n",
      "Epoch 50/100\n",
      "9000/9000 [==============================] - 0s 48us/step - loss: 66790055087.6729 - mean_absolute_error: 169547.4356 - val_loss: 68940874399.7440 - val_mean_absolute_error: 166973.0898\n",
      "Epoch 51/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 65932613630.1796 - mean_absolute_error: 170233.8978 - val_loss: 68835856056.3200 - val_mean_absolute_error: 163390.9880\n",
      "Epoch 52/100\n",
      "9000/9000 [==============================] - 0s 46us/step - loss: 65358403134.3502 - mean_absolute_error: 169301.0765 - val_loss: 68422441271.2960 - val_mean_absolute_error: 164856.0640\n",
      "Epoch 53/100\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 65620730798.9902 - mean_absolute_error: 169365.8262 - val_loss: 67874094186.4960 - val_mean_absolute_error: 165336.4861\n",
      "Epoch 54/100\n",
      "9000/9000 [==============================] - 0s 44us/step - loss: 66880945942.9831 - mean_absolute_error: 169761.5751 - val_loss: 67890243977.2160 - val_mean_absolute_error: 164320.2940\n",
      "Epoch 55/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 64419184246.7840 - mean_absolute_error: 168454.7713 - val_loss: 67346170413.0560 - val_mean_absolute_error: 164768.6008\n",
      "Epoch 56/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 65177372069.4329 - mean_absolute_error: 168449.5421 - val_loss: 67791500902.4000 - val_mean_absolute_error: 165838.9350\n",
      "Epoch 57/100\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 65024700179.3422 - mean_absolute_error: 168906.5574 - val_loss: 67801947947.0080 - val_mean_absolute_error: 162728.9579\n",
      "Epoch 58/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 64654940016.1849 - mean_absolute_error: 167832.5279 - val_loss: 67728330719.2320 - val_mean_absolute_error: 164693.5116\n",
      "Epoch 59/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 64831125068.9138 - mean_absolute_error: 168348.3042 - val_loss: 68015988097.0240 - val_mean_absolute_error: 161282.3737\n",
      "Epoch 60/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 65118147450.1973 - mean_absolute_error: 167846.5720 - val_loss: 67497627484.1600 - val_mean_absolute_error: 164012.5759\n",
      "Epoch 61/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 65309362243.3564 - mean_absolute_error: 168670.2151 - val_loss: 66339706404.8640 - val_mean_absolute_error: 161357.7330\n",
      "Epoch 62/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 63880108052.0249 - mean_absolute_error: 166903.7318 - val_loss: 65910615031.8080 - val_mean_absolute_error: 165926.3783\n",
      "Epoch 63/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 64326271787.9182 - mean_absolute_error: 167519.9265 - val_loss: 66243321626.6240 - val_mean_absolute_error: 162440.7123\n",
      "Epoch 64/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 63162347960.5476 - mean_absolute_error: 166696.1616 - val_loss: 68141240565.7600 - val_mean_absolute_error: 160539.4379\n",
      "Epoch 65/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 62053304296.3342 - mean_absolute_error: 166776.2854 - val_loss: 66349084835.8400 - val_mean_absolute_error: 161902.1382\n",
      "Epoch 66/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 63718687921.4933 - mean_absolute_error: 166762.7607 - val_loss: 66272387547.1360 - val_mean_absolute_error: 165220.0925\n",
      "Epoch 67/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 62546910664.0213 - mean_absolute_error: 166358.4668 - val_loss: 66596707500.0320 - val_mean_absolute_error: 159726.0030\n",
      "Epoch 68/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 63020592707.8116 - mean_absolute_error: 166148.7944 - val_loss: 65963834507.2640 - val_mean_absolute_error: 159570.1588\n",
      "Epoch 69/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 64090824026.7947 - mean_absolute_error: 166423.2674 - val_loss: 66000831283.2000 - val_mean_absolute_error: 162261.8711\n",
      "Epoch 70/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 63030771910.4284 - mean_absolute_error: 166518.0828 - val_loss: 64924819488.7680 - val_mean_absolute_error: 163370.2824\n",
      "Epoch 71/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 62621591348.1102 - mean_absolute_error: 166257.7499 - val_loss: 65724308488.1920 - val_mean_absolute_error: 161328.8643\n",
      "Epoch 72/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 63131539421.4116 - mean_absolute_error: 165317.9134 - val_loss: 64982336503.8080 - val_mean_absolute_error: 161795.6842\n",
      "Epoch 73/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 63937554204.4444 - mean_absolute_error: 166319.0606 - val_loss: 66014421450.7520 - val_mean_absolute_error: 163975.4090\n",
      "Epoch 74/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 62679798837.7031 - mean_absolute_error: 165246.8119 - val_loss: 65588906426.3680 - val_mean_absolute_error: 160006.6462\n",
      "Epoch 75/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 63413671704.8036 - mean_absolute_error: 165767.8497 - val_loss: 66374228377.6000 - val_mean_absolute_error: 158706.9335\n",
      "Epoch 76/100\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 62390714695.6800 - mean_absolute_error: 164642.4845 - val_loss: 64472707121.1520 - val_mean_absolute_error: 160086.8163\n",
      "Epoch 77/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 62709620947.1716 - mean_absolute_error: 164594.8418 - val_loss: 65905071734.7840 - val_mean_absolute_error: 160753.4907\n",
      "Epoch 78/100\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9000/9000 [==============================] - 0s 39us/step - loss: 62728878981.1200 - mean_absolute_error: 165812.2497 - val_loss: 65029084938.2400 - val_mean_absolute_error: 163018.4521\n",
      "Epoch 79/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 62795487561.5004 - mean_absolute_error: 165845.6400 - val_loss: 64556607062.0160 - val_mean_absolute_error: 157840.6205\n",
      "Epoch 80/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 62340793758.1511 - mean_absolute_error: 164494.1900 - val_loss: 64609564114.9440 - val_mean_absolute_error: 166154.5951\n",
      "Epoch 81/100\n",
      "9000/9000 [==============================] - 0s 45us/step - loss: 61922347348.4231 - mean_absolute_error: 163785.3828 - val_loss: 64547886186.4960 - val_mean_absolute_error: 162548.1073\n",
      "Epoch 82/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61538923489.9627 - mean_absolute_error: 165176.0698 - val_loss: 64466047991.8080 - val_mean_absolute_error: 158924.0157\n",
      "Epoch 83/100\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 62658268113.5787 - mean_absolute_error: 165020.1855 - val_loss: 65355146330.1120 - val_mean_absolute_error: 159626.0429\n",
      "Epoch 84/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 63164381553.5502 - mean_absolute_error: 165319.0596 - val_loss: 66534368444.4160 - val_mean_absolute_error: 159803.9907\n",
      "Epoch 85/100\n",
      "9000/9000 [==============================] - ETA: 0s - loss: 62846820199.1642 - mean_absolute_error: 165273.24 - 0s 37us/step - loss: 62365567582.2080 - mean_absolute_error: 164806.3273 - val_loss: 64869488295.9360 - val_mean_absolute_error: 157918.1597\n",
      "Epoch 86/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 62921986990.9902 - mean_absolute_error: 164654.5736 - val_loss: 64875620843.5200 - val_mean_absolute_error: 160833.9466\n",
      "Epoch 87/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 60854758728.5902 - mean_absolute_error: 163850.5852 - val_loss: 64366409400.3200 - val_mean_absolute_error: 157804.2203\n",
      "Epoch 88/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 61781530421.9307 - mean_absolute_error: 163836.4514 - val_loss: 63659273519.1040 - val_mean_absolute_error: 159271.8705\n",
      "Epoch 89/100\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 60322552006.4284 - mean_absolute_error: 163215.2104 - val_loss: 63536468983.8080 - val_mean_absolute_error: 157920.9246\n",
      "Epoch 90/100\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 61629682195.5698 - mean_absolute_error: 164298.9746 - val_loss: 64044071665.6640 - val_mean_absolute_error: 156791.8611\n",
      "Epoch 91/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 61398873258.2116 - mean_absolute_error: 164159.4837 - val_loss: 63398683066.3680 - val_mean_absolute_error: 158279.1911\n",
      "Epoch 92/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 62422354748.3022 - mean_absolute_error: 164085.9873 - val_loss: 65279556976.6400 - val_mean_absolute_error: 157935.6787\n",
      "Epoch 93/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 61741924730.6525 - mean_absolute_error: 163723.9187 - val_loss: 63664061825.0240 - val_mean_absolute_error: 156598.4000\n",
      "Epoch 94/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61857881391.1040 - mean_absolute_error: 164000.2179 - val_loss: 66291897106.4320 - val_mean_absolute_error: 159581.7265\n",
      "Epoch 95/100\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 60633240494.9902 - mean_absolute_error: 164557.4835 - val_loss: 64226927820.8000 - val_mean_absolute_error: 161691.2812\n",
      "Epoch 96/100\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 62074629683.4276 - mean_absolute_error: 164327.2612 - val_loss: 63102268178.4320 - val_mean_absolute_error: 160416.7767\n",
      "Epoch 97/100\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 60949814331.1644 - mean_absolute_error: 162699.7160 - val_loss: 64354159214.5920 - val_mean_absolute_error: 157320.3955\n",
      "Epoch 98/100\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60656710250.9511 - mean_absolute_error: 163043.9346 - val_loss: 63650081423.3600 - val_mean_absolute_error: 157208.1043\n",
      "Epoch 99/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 62309635253.1342 - mean_absolute_error: 164716.1908 - val_loss: 64804209704.9600 - val_mean_absolute_error: 161311.0185\n",
      "Epoch 100/100\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 61928840729.9413 - mean_absolute_error: 163444.6943 - val_loss: 64401132077.0560 - val_mean_absolute_error: 156756.4594\n"
     ]
    }
   ],
   "source": [
    "X_train,X_val,y_train,y_val=train_test_split(train_data[var],train_data['sell_price'].values,test_size=0.1,random_state=0)\n",
    "model=make_model(18)\n",
    "history = model.fit(X_train,y_train,batch_size=64,epochs=100,verbose=1,validation_data=(X_val,y_val),shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2UelYpGguyVfhIH1hoYGNm3aBMDnPvc5qqur+fSnP33IPu6OuxOJFM7hO++884TXJSJyrMqmpRAJ++BncrbV1q1bWb16NR/96EdZt24dbW1trF+/npaWFs4991xuuumm8X0vueQSNm3aRDabpa6ujhtuuIE1a9bw+te/ngMHDsxYzSJS3mZdS+HzP3qeF/b2HbY9785wJkciFiUaObZB2lWLarnxd4/1muyBF154gTvvvJPbbrsNgC984QvMnTuXbDbLm9/8Zq655hpWrVp1yGt6e3t505vexBe+8AU+9alPcccdd3DDDTcUensRkROqbFoKY2b6rIyVK1dy4YUXjj++++67WbduHevWrWPz5s288MILh72mqqqKK6+8EoALLriAHTt2zFS5IlLmZl1LYaq/6DPZHC/u66e5PsncVHzG6kmlUuP3t2zZwpe+9CUef/xx6urqeN/73lfwXIN4/GB90WiUbDY7I7WKiJRNS2FsTKEYA83T1dfXR01NDbW1tbS1tfGTn+jKnyJycpl1LYWpnAyhsG7dOlatWsXq1as57bTTuPjii0tWi4hIIbNi7aPNmzdzzjnnHPF17s6ze3qZV5NgwZxEMUucMdM5bhERKLO1j6bDzIiYzeiUVBGRU03ZhAIEXUil7D4SETnZlVkoQF6ZICIypTILBbUURESOpKxCwSJqKYiIHElZhYJaCiIiR6ZQOAFOxNLZAHfccQf79u074fWJiExX2Zy8BuFAcxGusTOdpbOn44477mDdunUsWLDgRJcoIjItZRYKM3+ewl133cVXvvIVMpkMb3jDG7j11lvJ5/Ncd911bNq0CXdn/fr1zJ8/n02bNnHttddSVVXF448/fsgaSCIiM6FooWBmCeBXQGX4Ofe6+42T9vkQ8DfAnnDTre7+z6/qgx+4AfY9W/Cpedkc2bxD/BgPe8F5cOUXjrmU5557jh/84Af8+te/pqKigvXr1/Pd736XlStX0tHRwbPPBnX29PRQV1fHl7/8ZW699VbWrl17zJ8lInIiFLOlMAK8xd0HzCwGPGJmD7j7o5P2+567/2kR6yiZBx98kCeeeIKWluDM8uHhYZYsWcLb3vY2XnrpJT7xiU/w9re/ncsvv7zElYqIBIoWCh700wyED2Phrfh9N0f4i767L82BvjTnLZ6D2bFdaOd4uDsf/vCH+cu//MvDnnvm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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# 绘制训练 & 验证的损失值\n",
    "def plot_graph(history):\n",
    "    plt.plot(history.history['loss'])\n",
    "    plt.plot(history.history['val_loss'])\n",
    "    plt.title('Model loss')\n",
    "    plt.ylabel('Loss')\n",
    "    plt.xlabel('Epoch')\n",
    "    plt.legend(['Train', 'Test'], loc='upper left')\n",
    "    plt.show()\n",
    "plot_graph(history)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.save(\"data\\\\nn_model.yaml\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 9000 samples, validate on 1000 samples\n",
      "Epoch 1/2000\n",
      "9000/9000 [==============================] - 1s 72us/step - loss: 61552451782.4284 - mean_absolute_error: 163768.4617 - val_loss: 64961556660.2240 - val_mean_absolute_error: 158849.9488\n",
      "Epoch 2/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 61834235842.1049 - mean_absolute_error: 164056.9653 - val_loss: 65187709321.2160 - val_mean_absolute_error: 157110.1118\n",
      "Epoch 3/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 61262621707.8329 - mean_absolute_error: 162583.9628 - val_loss: 63012180017.1520 - val_mean_absolute_error: 156847.1850\n",
      "Epoch 4/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 60803451296.8818 - mean_absolute_error: 163537.6461 - val_loss: 63286791798.7840 - val_mean_absolute_error: 157799.2338\n",
      "Epoch 5/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60737127197.3547 - mean_absolute_error: 162417.3697 - val_loss: 63902413078.5280 - val_mean_absolute_error: 156512.1239\n",
      "Epoch 6/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 62850518774.2151 - mean_absolute_error: 164117.0448 - val_loss: 63509903572.9920 - val_mean_absolute_error: 157036.8483\n",
      "Epoch 7/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 59782933146.2827 - mean_absolute_error: 161404.5903 - val_loss: 63820220825.6000 - val_mean_absolute_error: 157752.6649\n",
      "Epoch 8/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60722125067.6053 - mean_absolute_error: 162169.0426 - val_loss: 62790319374.3360 - val_mean_absolute_error: 158871.3868\n",
      "Epoch 9/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61299249246.6631 - mean_absolute_error: 162686.2812 - val_loss: 63506375344.1280 - val_mean_absolute_error: 158223.5030\n",
      "Epoch 10/2000\n",
      "9000/9000 [==============================] - 0s 48us/step - loss: 60968271336.7893 - mean_absolute_error: 163033.8707 - val_loss: 64412016689.1520 - val_mean_absolute_error: 156304.4954\n",
      "Epoch 11/2000\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 60268771468.1742 - mean_absolute_error: 162475.8360 - val_loss: 63552452952.0640 - val_mean_absolute_error: 158655.1032\n",
      "Epoch 12/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61569045568.6258 - mean_absolute_error: 163341.9550 - val_loss: 62733440253.9520 - val_mean_absolute_error: 158004.9012\n",
      "Epoch 13/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 60460481496.8604 - mean_absolute_error: 161758.1231 - val_loss: 64701049061.3760 - val_mean_absolute_error: 157243.6389\n",
      "Epoch 14/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60488353447.9360 - mean_absolute_error: 162754.3963 - val_loss: 64117818802.1760 - val_mean_absolute_error: 155671.0883\n",
      "Epoch 15/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60467355684.4089 - mean_absolute_error: 162668.9078 - val_loss: 62553190531.0720 - val_mean_absolute_error: 160170.2386\n",
      "Epoch 16/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61567953727.9431 - mean_absolute_error: 163135.3352 - val_loss: 64363538038.7840 - val_mean_absolute_error: 158298.0686\n",
      "Epoch 17/2000\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 61315472883.7120 - mean_absolute_error: 163826.3749 - val_loss: 63263615074.3040 - val_mean_absolute_error: 155922.5280\n",
      "Epoch 18/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60763781791.7440 - mean_absolute_error: 162201.0190 - val_loss: 63171586064.3840 - val_mean_absolute_error: 154699.7492\n",
      "Epoch 19/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61725314473.0738 - mean_absolute_error: 162938.9359 - val_loss: 62597311643.6480 - val_mean_absolute_error: 158473.2030\n",
      "Epoch 20/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60679454658.1049 - mean_absolute_error: 161666.8392 - val_loss: 63052816596.9920 - val_mean_absolute_error: 155785.8030\n",
      "Epoch 21/2000\n",
      "9000/9000 [==============================] - 0s 49us/step - loss: 60992878630.2293 - mean_absolute_error: 162227.1261 - val_loss: 62852502814.7200 - val_mean_absolute_error: 157397.0594\n",
      "Epoch 22/2000\n",
      "9000/9000 [==============================] - 0s 53us/step - loss: 61450123167.5164 - mean_absolute_error: 161732.6863 - val_loss: 62400029491.2000 - val_mean_absolute_error: 157129.5136\n",
      "Epoch 23/2000\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 60507715396.4942 - mean_absolute_error: 162661.7869 - val_loss: 64557779140.6080 - val_mean_absolute_error: 159686.6465\n",
      "Epoch 24/2000\n",
      "9000/9000 [==============================] - 0s 46us/step - loss: 60255640944.6400 - mean_absolute_error: 162757.5318 - val_loss: 66887176568.8320 - val_mean_absolute_error: 156560.0958\n",
      "Epoch 25/2000\n",
      "9000/9000 [==============================] - 0s 44us/step - loss: 60230898111.8293 - mean_absolute_error: 161403.3148 - val_loss: 63098898579.4560 - val_mean_absolute_error: 160681.2242\n",
      "Epoch 26/2000\n",
      "9000/9000 [==============================] - 0s 48us/step - loss: 60905231428.2667 - mean_absolute_error: 162518.4742 - val_loss: 63033348866.0480 - val_mean_absolute_error: 155158.0097\n",
      "Epoch 27/2000\n",
      "9000/9000 [==============================] - 0s 49us/step - loss: 59014930821.5751 - mean_absolute_error: 161696.5787 - val_loss: 62670506000.3840 - val_mean_absolute_error: 154873.3101\n",
      "Epoch 28/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 61331108772.0676 - mean_absolute_error: 162534.4696 - val_loss: 64027655356.4160 - val_mean_absolute_error: 154291.5084\n",
      "Epoch 29/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60173293131.0933 - mean_absolute_error: 161356.0538 - val_loss: 62313249751.0400 - val_mean_absolute_error: 156526.3101\n",
      "Epoch 30/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61829304960.7964 - mean_absolute_error: 162557.1123 - val_loss: 63666385092.6080 - val_mean_absolute_error: 155962.8260\n",
      "Epoch 31/2000\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 60812187795.4560 - mean_absolute_error: 162118.6494 - val_loss: 62728347746.3040 - val_mean_absolute_error: 157411.1021\n",
      "Epoch 32/2000\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 61164966976.6258 - mean_absolute_error: 162425.3471 - val_loss: 63042283339.7760 - val_mean_absolute_error: 154321.8516\n",
      "Epoch 33/2000\n",
      "9000/9000 [==============================] - 0s 45us/step - loss: 61318275605.3902 - mean_absolute_error: 162481.9659 - val_loss: 64260373905.4080 - val_mean_absolute_error: 156234.8657\n",
      "Epoch 34/2000\n",
      "9000/9000 [==============================] - 0s 50us/step - loss: 59649957108.8498 - mean_absolute_error: 161869.0618 - val_loss: 63074178547.7120 - val_mean_absolute_error: 156446.2216\n",
      "Epoch 35/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60109578837.1058 - mean_absolute_error: 162084.9987 - val_loss: 62786798616.5760 - val_mean_absolute_error: 154580.6913\n",
      "Epoch 36/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 59758460076.0320 - mean_absolute_error: 160990.7709 - val_loss: 62680669339.6480 - val_mean_absolute_error: 157012.2932\n",
      "Epoch 37/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60689539996.7858 - mean_absolute_error: 162508.7189 - val_loss: 63764252819.4560 - val_mean_absolute_error: 155661.4295\n",
      "Epoch 38/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59906735727.5022 - mean_absolute_error: 161302.1180 - val_loss: 62519020601.3440 - val_mean_absolute_error: 157212.1629\n",
      "Epoch 39/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 61380212277.2480 - mean_absolute_error: 162071.6780 - val_loss: 62724539187.2000 - val_mean_absolute_error: 160881.0471\n",
      "Epoch 40/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 59396125727.8578 - mean_absolute_error: 161282.1175 - val_loss: 65654576939.0080 - val_mean_absolute_error: 154708.3129\n",
      "Epoch 41/2000\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 60815586641.6924 - mean_absolute_error: 161666.0768 - val_loss: 62783573295.1040 - val_mean_absolute_error: 154696.3154\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 42/2000\n",
      "9000/9000 [==============================] - 0s 47us/step - loss: 60594728519.4524 - mean_absolute_error: 161510.1416 - val_loss: 62506063216.6400 - val_mean_absolute_error: 154716.8670\n",
      "Epoch 43/2000\n",
      "9000/9000 [==============================] - 0s 44us/step - loss: 60467162892.0604 - mean_absolute_error: 161685.3323 - val_loss: 66538577952.7680 - val_mean_absolute_error: 159614.6222\n",
      "Epoch 44/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60749485572.0960 - mean_absolute_error: 161415.3251 - val_loss: 64966165512.1920 - val_mean_absolute_error: 155734.5876\n",
      "Epoch 45/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60422889413.7458 - mean_absolute_error: 161652.3694 - val_loss: 62352230694.9120 - val_mean_absolute_error: 155142.9036\n",
      "Epoch 46/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59341547540.0249 - mean_absolute_error: 160776.5438 - val_loss: 62646656860.1600 - val_mean_absolute_error: 153776.5731\n",
      "Epoch 47/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60591579339.8898 - mean_absolute_error: 161217.7192 - val_loss: 62289023746.0480 - val_mean_absolute_error: 155268.1051\n",
      "Epoch 48/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 59686103329.4507 - mean_absolute_error: 161110.0941 - val_loss: 62915716612.0960 - val_mean_absolute_error: 155334.1595\n",
      "Epoch 49/2000\n",
      "9000/9000 [==============================] - 0s 43us/step - loss: 60126487332.6364 - mean_absolute_error: 161246.2460 - val_loss: 62967602642.9440 - val_mean_absolute_error: 154910.4465\n",
      "Epoch 50/2000\n",
      "9000/9000 [==============================] - 0s 44us/step - loss: 59116665159.6800 - mean_absolute_error: 160511.0682 - val_loss: 62522924728.3200 - val_mean_absolute_error: 155229.8430\n",
      "Epoch 51/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60081693811.5982 - mean_absolute_error: 161250.6523 - val_loss: 63176240496.6400 - val_mean_absolute_error: 156341.9365\n",
      "Epoch 52/2000\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 60557898878.5209 - mean_absolute_error: 160981.4365 - val_loss: 62751319932.9280 - val_mean_absolute_error: 157017.5203\n",
      "Epoch 53/2000\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 59116576687.9004 - mean_absolute_error: 161013.2392 - val_loss: 62624023576.5760 - val_mean_absolute_error: 154149.5666\n",
      "Epoch 54/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 60461862060.0320 - mean_absolute_error: 162111.6533 - val_loss: 62802365120.5120 - val_mean_absolute_error: 155418.8708\n",
      "Epoch 55/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60697986327.4382 - mean_absolute_error: 161678.9126 - val_loss: 62582667771.9040 - val_mean_absolute_error: 154439.8847\n",
      "Epoch 56/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59688526712.3769 - mean_absolute_error: 160793.7329 - val_loss: 62702509228.0320 - val_mean_absolute_error: 155110.2696\n",
      "Epoch 57/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 59696702677.9022 - mean_absolute_error: 160552.0027 - val_loss: 65064859140.0960 - val_mean_absolute_error: 154644.5787\n",
      "Epoch 58/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61074491164.4444 - mean_absolute_error: 161464.4990 - val_loss: 62106634846.2080 - val_mean_absolute_error: 154435.3414\n",
      "Epoch 59/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59523770977.8489 - mean_absolute_error: 160631.6743 - val_loss: 62487931944.9600 - val_mean_absolute_error: 154481.2648\n",
      "Epoch 60/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 59265358193.5502 - mean_absolute_error: 160364.4552 - val_loss: 63736724865.0240 - val_mean_absolute_error: 154170.1025\n",
      "Epoch 61/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60028501331.5129 - mean_absolute_error: 160378.6263 - val_loss: 62300098674.6880 - val_mean_absolute_error: 155938.8875\n",
      "Epoch 62/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 61325217883.0222 - mean_absolute_error: 161648.8012 - val_loss: 63261058826.2400 - val_mean_absolute_error: 155172.8200\n",
      "Epoch 63/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60502854043.4204 - mean_absolute_error: 161072.0994 - val_loss: 62553806209.0240 - val_mean_absolute_error: 154111.3660\n",
      "Epoch 64/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59497484666.6525 - mean_absolute_error: 160890.7218 - val_loss: 62429618667.5200 - val_mean_absolute_error: 153493.2150\n",
      "Epoch 65/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60679631798.2720 - mean_absolute_error: 160978.0797 - val_loss: 61876371439.6160 - val_mean_absolute_error: 154120.6150\n",
      "Epoch 66/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 61314733786.9084 - mean_absolute_error: 161836.8161 - val_loss: 62612499054.5920 - val_mean_absolute_error: 156100.9381\n",
      "Epoch 67/2000\n",
      "9000/9000 [==============================] - 0s 45us/step - loss: 60917273289.6142 - mean_absolute_error: 161598.5905 - val_loss: 62704889233.4080 - val_mean_absolute_error: 154008.9225\n",
      "Epoch 68/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59671591813.1200 - mean_absolute_error: 160851.9263 - val_loss: 63788383453.1840 - val_mean_absolute_error: 154562.7310\n",
      "Epoch 69/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 60246630006.7840 - mean_absolute_error: 160793.4391 - val_loss: 61788302999.5520 - val_mean_absolute_error: 156188.7706\n",
      "Epoch 70/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60368725955.9253 - mean_absolute_error: 160546.0047 - val_loss: 61842426806.2720 - val_mean_absolute_error: 156133.2120\n",
      "Epoch 71/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59991795276.9138 - mean_absolute_error: 160466.9411 - val_loss: 63764568309.7600 - val_mean_absolute_error: 154212.3904\n",
      "Epoch 72/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 59882249125.8880 - mean_absolute_error: 161207.9009 - val_loss: 62292843593.7280 - val_mean_absolute_error: 156060.6773\n",
      "Epoch 73/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59529718202.3680 - mean_absolute_error: 160564.6396 - val_loss: 63013079580.6720 - val_mean_absolute_error: 153409.4482\n",
      "Epoch 74/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 60345672937.9271 - mean_absolute_error: 161400.1795 - val_loss: 62348500271.1040 - val_mean_absolute_error: 155650.4912\n",
      "Epoch 75/2000\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 60254293284.1813 - mean_absolute_error: 160771.9007 - val_loss: 62608343695.3600 - val_mean_absolute_error: 155120.1286\n",
      "Epoch 76/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 60313515207.3387 - mean_absolute_error: 161684.6587 - val_loss: 62467924934.6560 - val_mean_absolute_error: 155336.9010\n",
      "Epoch 77/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60002601092.8924 - mean_absolute_error: 160705.3341 - val_loss: 63573646917.6320 - val_mean_absolute_error: 156232.5189\n",
      "Epoch 78/2000\n",
      "9000/9000 [==============================] - 0s 41us/step - loss: 60484123368.5618 - mean_absolute_error: 160820.2746 - val_loss: 61720480432.1280 - val_mean_absolute_error: 156136.8285\n",
      "Epoch 79/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 59995065983.8862 - mean_absolute_error: 161226.6857 - val_loss: 64003128655.8720 - val_mean_absolute_error: 154703.6105\n",
      "Epoch 80/2000\n",
      "9000/9000 [==============================] - 0s 42us/step - loss: 60944517016.2347 - mean_absolute_error: 160941.5255 - val_loss: 62414184873.9840 - val_mean_absolute_error: 155683.1263\n",
      "Epoch 81/2000\n",
      "9000/9000 [==============================] - 0s 40us/step - loss: 59311488645.3475 - mean_absolute_error: 160227.7529 - val_loss: 63441570267.1360 - val_mean_absolute_error: 154484.0559\n",
      "Epoch 82/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 60688706091.2356 - mean_absolute_error: 160606.6702 - val_loss: 61484782354.4320 - val_mean_absolute_error: 156032.8463\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 83/2000\n",
      "9000/9000 [==============================] - 0s 37us/step - loss: 60859287936.1138 - mean_absolute_error: 161363.7777 - val_loss: 61589002928.1280 - val_mean_absolute_error: 153890.6960\n",
      "Epoch 84/2000\n",
      "9000/9000 [==============================] - 0s 38us/step - loss: 58783010928.8676 - mean_absolute_error: 159917.5481 - val_loss: 62045124427.7760 - val_mean_absolute_error: 152841.1084\n",
      "Epoch 85/2000\n",
      "9000/9000 [==============================] - 0s 39us/step - loss: 58897887810.9013 - mean_absolute_error: 159912.1734 - val_loss: 62075854487.5520 - val_mean_absolute_error: 156885.2994\n",
      "Epoch 86/2000\n",
      "9000/9000 [==============================] - 0s 46us/step - loss: 60779969868.2311 - mean_absolute_error: 160158.1448 - val_loss: 62042465370.1120 - val_mean_absolute_error: 158462.9374\n",
      "Epoch 87/2000\n",
      "4480/9000 [=============>................] - ETA: 0s - loss: 62947956297.1429 - mean_absolute_error: 162658.8549"
     ]
    }
   ],
   "source": [
    "from keras.models import load_model\n",
    "for i in range(0,100):\n",
    "    model = load_model(\"data\\\\nn_model.yaml\")\n",
    "    history = model.fit(X_train,y_train,batch_size=64,epochs=2000,verbose=1,validation_data=(X_val,y_val),shuffle=True)\n",
    "    plot_graph(history)\n",
    "    model.save(\"data\\\\nn_model.yaml\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = load_model(\"data\\\\nn_model.yaml\") \n",
    "pred=model.predict(test_data[var].values)\n",
    "submissionFile=pd.DataFrame({'price':pred.reshape(1,-1)[0]})\n",
    "submissionFile.to_csv(\"data\\\\submission.csv\",index=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
